# 1. 装饰器的定义
# 装饰器是一个函数，它接收一个函数作为参数，并返回一个新的函数。装饰器的作用是在不修改原始函数代码的情况下，为函数添加额外的功能。
# 2. 装饰器的语法
# 装饰器的语法是通过 @ 符号来实现的。@decorator_name 会将下面的函数传递给装饰器，并将装饰器返回的函数替换为原始函数。
def my_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@my_decorator
def greet():
    print("Hello!")

greet()